Date:         24 January, 1987

From:         Lee D. Rimar

To:           Programmers and Users of programs listed in this note

Subject:      SQueeze, CRunch & UNSQueeze, UNCRunch utilities


    If you're just viewing this text with some kind of crunched file
handler like LT, VLU, or others, you shouldn't notice anything strange
about it.

    But try to use LT or VLU to extract TO DISK the original, uncrunched
file, and you're in for a nasty surprise.

    This file was set to READ-ONLY before it was crunched.  The resulting
file is not read-only -- but inside the crunched file header, the $R/O
attribute is still set.

    When LT or VLU try to uncrunch a file like this, the first thing
they do is create an empty directory entry for it.  They get the
original file name out of the crunched file header (containing the
original file attributes, remember?).  So they create an empty read-only
file, then abort (BDOS error on d: File $R/O) from trying to put the
uncrunched data into it.

    I have a hunch this problem has existed as long as these programs
have, but it's an obscure detail few people notice.  I tested several
combinations of crunchers and uncrunchers, with varying results.  Here's
what happens when you compress files with:


    NSWP v2.07 (Huffman SQueeze only):  If original file was $R/O,
    resulting file will be also.  Other attributes ($SYS, $ARC) are
    not carried over to resulting filename.  However, the compressed
    file header does maintain ALL the attributes of the original
    filename.

    CRUNCH v2.4 (LZW CRunch only):  Resulting filenames have no
    attributes set.  The compressed file header maintains all
    attributes of original filename.

    VLU v1.02 (LZW CRunch only):  Resulting filenames have no
    attributes set.  The compressed file header maintains all
    attributes of original filename.


    Okay, so now you have a compressed file that may or may not be read-
only, but will definitely contain a header with any original attributes.
So when you try to uncompress it:


    NSWP v2.07 (extracts Huffman SQueezed files only):  All original
    attributes are restored to extracted filename.  No problem.

    UNCR v2.4 (extracts LZW CRunched only):  Original attributes are
    stripped from extracted filename.  No problem unless you had
    wanted to keep them.

    NULU v1.51 (extracts Huffman Squeezed files from LBRs):  Same
    results as UNCR.

    LT v2.3 (extract Huffman SQueezed and LZW CRunched, from disk
    files or LBRs):  Attempts to restore all original attributes to
    extracted filename.  But if one of those attributes is $R/O,
    program will be stopped by a BDOS error as noted above.

    VLU v1.02 (extract Huffman SQueezed and LZW CRunched, from disk
    files or LBRs):  Same results as LT.


    Observations and summary:  If you're dealing strictly with the $SYS
and $ARC file attributes, maintaining them in compressed files is
somewhat interesting and possibly useful.  However, the poor handling of
the $R/O attribute by some uncrunch programs might be a minor irritation.

    Without editorializing too much, Dave Rand's "NSWP" program is
limited becuase it can't manipulate CRunched or LBR files.  But taking
its age into account (last CP/M version was 2.07, dated 7-13-1984), few
of the newer "more powerful" programs intended to replace it can match
its overall functionality, ease of use, and well thought out design.
Interestingly, NSWP is one easiest programs available to let you set,
reset, and display the file attributes under discussion here.

    Relating back to the subject of this file:  New programs aren't as
useful if new features are poorly implemented, or added at the expense
of old ones..  Ideally, any SQ/CR, UNSQ/UNCR programs should follow the
example of NSWP, which showed the highest degree of "respect" for file
attributes of any program tested.

-eof-
